package pe.com.cotelasa.scp.controlador.backingBean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.scp.controlador.comando.IComando;
import pe.com.cotelasa.scp.entidad.Articulo;
import pe.com.cotelasa.scp.entidad.CategoriaArticulo;
import pe.com.cotelasa.scp.entidad.Contacto;
import pe.com.cotelasa.scp.entidad.DetalleOrdenCompraServicio;
import pe.com.cotelasa.scp.entidad.OrdenCompraServicio;
import pe.com.cotelasa.scp.entidad.OrdenPedido;
import pe.com.cotelasa.scp.entidad.TipoFormaPago;
import pe.com.cotelasa.scp.entidad.TipoMoneda;
import pe.com.cotelasa.scp.to.ProveedorTO;

/**
 *
 * @author zer0
 */
@Named(value = "BKOrdenCompra")
@Scope("session")
public class BKOrdenCompra implements Serializable {

    private static final long serialVersionUID = 8722885348162724916L;
    private OrdenCompraServicio ordenCompraFormulario;
    private OrdenCompraServicio ordenCSBusqueda;
    private OrdenCompraServicio ordenCSAntigua;
    private OrdenCompraServicio ordenCSSeleccionado;
    private OrdenPedido ordenPedidoBusqueda;
    
    private Collection<OrdenCompraServicio> listaOrdenCompraActivos;
    private Collection<OrdenPedido> listaOrdenesPedido;
    
    private Collection<CategoriaArticulo> listaSubCategoriaEcontrada;
    private Collection<CategoriaArticulo> listaCategoriaPadre;
    
    private Collection<TipoMoneda> listaTipoMoneda;
    private Collection<Contacto> listaContacto;

    private List<DetalleOrdenCompraServicio> listaDetalleOrdenCompraServicio;
    private List<DetalleOrdenCompraServicio> listaTemporalDetalleOrdenCompraServicio;
    
    private Collection<ProveedorTO> listarProveedorPorTipo;
    private Collection<ProveedorTO> listaProveedor;
    
    
    private Integer idOrdenCompraServicioAntigua;
    private boolean estaOrdenPedidoSeleccionado = false;
    private boolean estaContactoSeleccionado = false;
    private String estadoOrdenCompraServicio = ""+OrdenCompraServicio.ESTADO_ORDEN_SC.BORRADOR.getValor();
    
    private boolean diasPago;
    private boolean diasLibre;
    
    private IComando comando;
    private Character tipoOrden;
    
    private Collection<TipoFormaPago> listaFormaPago;
    private List<String> listaTipoPago;
    
    private Date fechaInicio;
    private Date fechaFinal;
    
    //para partidas.
    
    private Collection<Articulo> listaArticuloComp;
    private Collection<Articulo> listaArticuloCat;

    public BKOrdenCompra() {
    }
    
    public void inicializarBean() {
        ordenCompraFormulario = new OrdenCompraServicio();
        listaDetalleOrdenCompraServicio = null;
        listaTemporalDetalleOrdenCompraServicio = new ArrayList<DetalleOrdenCompraServicio>();
        estadoOrdenCompraServicio = ""+OrdenCompraServicio.ESTADO_ORDEN_SC.BORRADOR.getValor();
        listaArticuloComp = new ArrayList<Articulo>();
        listaArticuloCat = new ArrayList<Articulo>();
        listaTipoPago = new ArrayList<String>();
        ordenCompraFormulario.setFormaPago(new TipoFormaPago());
        //listaSubCategoriaEcontrada = new ArrayList<CategoriaArticulo>();
    }
    
    public boolean isEstaOrdenPedidoSeleccionado() {
        return estaOrdenPedidoSeleccionado;
    }

    public void setEstaOrdenPedidoSeleccionado(boolean estaOrdenPedidoSeleccionado) {
        this.estaOrdenPedidoSeleccionado = estaOrdenPedidoSeleccionado;
    }
    
    public OrdenPedido getOrdenPedidoBusqueda() {
        return ordenPedidoBusqueda;
    }

    public void setOrdenPedidoBusqueda(OrdenPedido ordenPedidoBusqueda) {
        this.ordenPedidoBusqueda = ordenPedidoBusqueda;
    }

    public OrdenCompraServicio getOrdenCompraFormulario() {
        return ordenCompraFormulario;
    }

    public void setOrdenCompraFormulario(OrdenCompraServicio ordenCompraFormulario) {
        this.ordenCompraFormulario = ordenCompraFormulario;
    }
    
    public OrdenCompraServicio getOrdenCompraServicioSeleccionado() {
        return ordenCSSeleccionado;
    }

    public void setOrdenCompraServicioSeleccionado(OrdenCompraServicio ordenCSSeleccionado) {
        this.ordenCSSeleccionado = ordenCSSeleccionado;
    }

    public Collection<OrdenPedido> getListaOrdenesPedido() {
        return listaOrdenesPedido;
    }

    public void setListaOrdenesPedido(Collection<OrdenPedido> listaOrdenesPedido) {
        this.listaOrdenesPedido = listaOrdenesPedido;
    }
    
    
    public Collection<TipoMoneda> getListaTipoMoneda() {
        return listaTipoMoneda;
    }

    public void setListaTipoMoneda(Collection<TipoMoneda> listaTipoMoneda) {
        this.listaTipoMoneda = listaTipoMoneda;
    }
    
    public List<DetalleOrdenCompraServicio> getListaDetalleOrdenCompraServicio() {
        return listaDetalleOrdenCompraServicio;
    }

    public void setListaDetalleOrdenCompraServicio(List<DetalleOrdenCompraServicio> listaDetalleOrdenCompraServicio) {
        this.listaDetalleOrdenCompraServicio = listaDetalleOrdenCompraServicio;
    }


    public boolean isEstaContactoSeleccionado() {
        return estaContactoSeleccionado;
    }

    public void setEstaContactoSeleccionado(boolean estaContactoSeleccionado) {
        this.estaContactoSeleccionado = estaContactoSeleccionado;
    }

    public Collection<Contacto> getListaContacto() {
        return listaContacto;
    }

    public void setListaContacto(Collection<Contacto> listaContacto) {
        this.listaContacto = listaContacto;
    }


    public OrdenCompraServicio getOrdenCSAntigua() {
        return ordenCSAntigua;
    }

    public void setOrdenCSAntigua(OrdenCompraServicio ordenCSAntigua) {
        this.ordenCSAntigua = ordenCSAntigua;
    }

    public Integer getIdOrdenCompraServicioAntigua() {
        return idOrdenCompraServicioAntigua;
    }

    public void setIdOrdenCompraServicioAntigua(Integer idOrdenCompraServicioAntigua) {
        this.idOrdenCompraServicioAntigua = idOrdenCompraServicioAntigua;
    }

    public List<DetalleOrdenCompraServicio> getListaTemporalDetalleOrdenCompraServicio() {
        return listaTemporalDetalleOrdenCompraServicio;
    }

    public void setListaTemporalDetalleOrdenCompraServicio(List<DetalleOrdenCompraServicio> listaTemporalDetalleOrdenCompraServicio) {
        this.listaTemporalDetalleOrdenCompraServicio = listaTemporalDetalleOrdenCompraServicio;
    }

    public String getEstadoOrdenCompraServicio() {
        return estadoOrdenCompraServicio;
    }

    public void setEstadoOrdenCompraServicio(String estadoOrdenCompraServicio) {
        this.estadoOrdenCompraServicio = estadoOrdenCompraServicio;
    }

    public Collection<ProveedorTO> getListarProveedorPorTipo() {
        return listarProveedorPorTipo;
    }

    public void setListarProveedorPorTipo(Collection<ProveedorTO> listarProveedorPorTipo) {
        this.listarProveedorPorTipo = listarProveedorPorTipo;
    }

    public Collection<ProveedorTO> getListaProveedor() {
        return listaProveedor;
    }

    public void setListaProveedor(Collection<ProveedorTO> listaProveedor) {
        this.listaProveedor = listaProveedor;
    }


    public OrdenCompraServicio getOrdenCSBusqueda() {
        return ordenCSBusqueda;
    }

    public void setOrdenCSBusqueda(OrdenCompraServicio ordenCSBusqueda) {
        this.ordenCSBusqueda = ordenCSBusqueda;
    }

    public boolean isDiasPago() {
        return this.ordenCompraFormulario.getDiasPago()!=null && this.ordenCompraFormulario.getDiasPago() != 0;
    }

    public boolean isDiasLibre() {
        return this.ordenCompraFormulario.getDiasLibres()!=null && this.ordenCompraFormulario.getDiasLibres() != 0;
    }
    
    public boolean isDetallePago() {
        return this.ordenCompraFormulario.getDetallePago()!=null && !this.ordenCompraFormulario.getDetallePago().equalsIgnoreCase("");
    }

    public IComando getComando() {
        return comando;
    }

    public void setComando(IComando comando) {
        this.comando = comando;
    }

    public Character getTipoOrden() {
        return tipoOrden;
    }

    public void setTipoOrden(Character tipoOrden) {
        this.tipoOrden = tipoOrden;
    }

    public Collection<Articulo> getListaArticuloComp() {
        return listaArticuloComp;
    }

    public void setListaArticuloComp(Collection<Articulo> listaArticuloComp) {
        this.listaArticuloComp = listaArticuloComp;
    }

    public Collection<Articulo> getListaArticuloCat() {
        return listaArticuloCat;
    }

    public void setListaArticuloCat(Collection<Articulo> listaArticuloCat) {
        this.listaArticuloCat = listaArticuloCat;
    }

    public Collection<CategoriaArticulo> getListaSubCategoriaEcontrada() {
        return listaSubCategoriaEcontrada;
    }

    public void setListaSubCategoriaEcontrada(Collection<CategoriaArticulo> listaSubCategoriaEcontrada) {
        this.listaSubCategoriaEcontrada = listaSubCategoriaEcontrada;
    }

    public Collection<OrdenCompraServicio> getListaOrdenCompraActivos() {
        return listaOrdenCompraActivos;
    }

    public void setListaOrdenCompraActivos(Collection<OrdenCompraServicio> listaOrdenCompraActivos) {
        this.listaOrdenCompraActivos = listaOrdenCompraActivos;
    }

    public Collection<TipoFormaPago> getListaFormaPago() {
        return listaFormaPago;
    }

    public void setListaFormaPago(Collection<TipoFormaPago> listaFormaPago) {
        this.listaFormaPago = listaFormaPago;
    }

    public List<String> getListaTipoPago() {
        return listaTipoPago;
    }

    public void setListaTipoPago(List<String> listaTipoPago) {
        this.listaTipoPago = listaTipoPago;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Date fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

    public Collection<CategoriaArticulo> getListaCategoriaPadre() {
        return listaCategoriaPadre;
    }

    public void setListaCategoriaPadre(Collection<CategoriaArticulo> listaCategoriaPadre) {
        this.listaCategoriaPadre = listaCategoriaPadre;
    }
    
}
